The recent inclusion of data storage devices in set-top-boxes (STBs) and other devices (e.g., personal computers) permit users to record television programming for later viewing. As described in the following specification, data storage devices are typically high-capacity hard drives similar to those used in personal computers. Recording television programming for later viewing is often referred to as “time shifting.” In addition, time shifting typically requires the implementation of various personal video recorder (PVR) or digital video recorder (DVR) functionality, such as pause, rewind/replay, fast forward, slow motion, skip-ahead, skip-back and other “trick-modes,” into an STB unit.
Current devices that implement DVR functionality (DVR devices or DVRs) using a data storage device typically record television programming in one of two ways. Stored television programming can be referred to as a “persistent recording” if the user intends the recording to stay on the data storage device after actions such as channel changes and power off. Alternatively, a recording can be referred to as a “temporary recording” if it is not intended to be persistent. For example, if a user decides to record a movie for repeated viewing, a persistent recording may be made. However, if the user initiates the pause function during a sporting event to get refreshments, a temporary recording may be made. Upon return from getting refreshments, the user may pick up viewing from where he left off by playing back the temporary recording. Such a recording is regarded as temporary because the DVR device may eventually discard that recording of television programming (e.g., upon the occurrence of some “trigger event” such as a channel change command or power off command).
As described by the embodiments in this disclosure relating to satellite STBs, both types of recordings may be made and stored on a hard drive. The temporary recording capacity of an STB may be fixed in size (e.g., it can store only the last hour of television programming), or the capacity may vary as the amount of space on the hard drive used to store permanent recordings varies. The recordings typically exist on the hard drive in the form of digital data files and their storage and retrieval are managed by the hard drive's file management system. For clarity, a data file on the hard drive containing some or all of a temporary recording shall be referred to as the temporary buffer or, simply, a buffer. Files containing persistent recordings shall also be referred to as persistent events.
The distinction between temporary and persistent recordings is important when one considers how a DVR's file management system often treats the two types of recordings. In many DVRs, the file management system will delete some or all of the temporary buffers, as space is needed on the hard drive, to record new persistent recordings or maintain the current temporary recording. At the same time, the file manager may also protect persistent events on the hard drive. If the distinction between temporary and persistent recordings is not made, at some point the hard drive may fill up with data and no more recording may be done until something is deleted.
Typically, there are several methods to create a persistent recording. In one method (the “manual method”), a user manually selects a channel of television programming and commands the DVR to start recording the television programming that is being delivered. Normally, the user must also either manually terminate the recording when desired programming has been completely delivered. In a second method (the “scheduling method”) a user manually inputs the channel, date, time and duration of the desired television programming. The DVR then automatically records whatever is on the specified channel at the specified time and date.
In yet another method (the “Electronic Program Guide (EPG) method”), a user with access to an EPG, typically a database that contains a schedule of the current and upcoming television programming on the channels, may select a specific program to be recorded. The EPG data is often provided to a device, such as a satellite STB with integrated DVR functionality, on a separate channel by a programming distributor. If the selected programming is already being delivered, the DVR may begin recording immediately and record the remaining portion of the television programming as a persistent recording. If the selected program is to be delivered in the future, the DVR may create a timer from the EPG's schedule data that would initiate recording of the appropriate channel for the appropriate time. Alternatively, the DVR may store a program ID code that is contained in the EPG data for the specific program. This program ID code may then cause the DVR to identify and record the program when it is delivered. Furthermore, DVRs with access to EPGs or similar schedules may use the EPG data to generate an identifying name or other identifier for the recording that is independent of the method used to record a specific program.
Temporary recordings, on the other hand, are typically created in one of two ways, depending on the design of the DVR. In on-demand buffering, temporary recordings may be created when a pause function (e.g., a user command to “pause” the television programming) or some other command. In an on-demand buffering environment, and absent any such commands, the DVR may not be recording programming as temporary recordings. As mentioned above, temporary recordings made by the on-demand buffering method are typically deleted upon some triggering event, thus freeing up disc space for the next recording.
More common, however, is the continuous buffering method. In the continuous buffering method the temporary recording is continuously updated to include the most recently delivered television programming. The continuous recording method supports the trick functions including the ability to go back and replay a portion of the program the user has been watching. It supports the pause function by setting a marker at the initiation of the pause that indicates where playback should begin upon the user's release of the pause. Temporary buffers created by continuous buffering may also be deleted from time to time upon the occurrence of some triggering event. Subsequently, a new temporary buffer is created.
The above-described DVR functions have some limitations. There are times when a user may decide, while watching a specific program, that he wishes to record the program—in its entirety—for later viewing. Typical DVRs cannot do this, even those DVRs that continuously buffer previously viewed programming and have the previously viewed television programming already stored as a temporary recording. Furthermore, there are situations where a user may pause a program, and subsequently decide to start recording the program. There is currently no way to take information from the temporary buffer and store it as a persistent recording.
This is due in part to limitations of the file systems controlling the storage and retrieval of files on the hard drive. The hard drives and associated file systems used in DVR devices are typically the same as those used in general purpose or personal computers. Such file systems are designed to store and retrieve files that are created and used by different software applications. File systems do not, typically, modify or delete data from a file because they normally have no way of knowing what any given piece of data in a file represents.
File systems, however, can truncate files by deleting data from the end of the file. This ability is included so that the file system to record at least a portion of a file if there is not enough space to record the entire file. Truncation preserves the formatting and initialization data normally associated with a modern computer file which is typically stored at the beginning of the file. Such formatting information would indicate things such as what version of software the file was created by, defaults to be used in reading the data, etc.
Prior art file systems are not capable, however, of deleting data from the front end of a file. Similarly, prior art file systems for DVR devices are not capable of converting a temporary recording into a persistent recording.
Thus, there is a need for DVR devices that can convert television programming stored in a temporary buffer into a persistent event and there is a further need to provide a file system that can trim data from a temporary buffer without requiring additional software, RAM and other hardware normally associated with general purpose computers.